
/***/
import {
  Set_State,
  Destroy_State,
  Set_Token,
  Destroy_Token,

  Add_Goods_Count,
  Insert_Car_Goods,
  Destroy_Car_Goods,
} from './mutations-types'

export default {

  /**
   * 控制调用添加state的方法
   * @param context
   * @param payload
   * @returns {Promise<unknown>}
   */
  aSetState (context, payload) {
    return new Promise((resolve, reject) => {
      context.commit(Set_State, payload)
      resolve('添加state成功')
    })
  },

  /**
   * 控制调用删除state的方法
   * @param context
   * @param payload
   * @returns {Promise<unknown>}
   */
  aDestroyState (context, payload) {
    return new Promise((resolve, reject) => {
      context.commit(Destroy_State, payload)
      resolve('清空state成功')
    })
  },

  /**
   * 控制调用添加token的方法
   * @param context
   * @param payload
   * @returns {Promise<unknown>}
   */
  aSetToken (context, payload) {
    return new Promise((resolve, reject) => {
      context.commit(Set_Token, payload)
      resolve('添加token《'+payload+'》成功')
    })
  },

  /**
   * 控制调用删除token的方法
   * @param context
   * @param payload
   * @returns {Promise<unknown>}
   */
  aDestroyToken (context, payload) {
    return new Promise((resolve, reject) => {
      context.commit(Destroy_Token, payload)
      resolve('删除token《'+payload+'》成功')
    })
  },

  /**
   * 添加商品至购物车
   * @param context
   * @param payload
   * @returns {Promise<unknown>}
   */
  aAddToCar (context, payload) {
    return new Promise ((resolve, reject) => { /**为了让外界知道这个函数执行是否成功,可以使用Promise,借助resolve,reject; .then() .catch() 方法*/
    let existenceGoods = null //是否存在 某个商品 ,默认为空
      /**遍历购物车中的商品列表*/
      for (let item of context.state.carList) {
        if (item.id === payload.id && item.id && payload.id) { //如果购物车中存在此要添加的商品
          existenceGoods = item //把是否存在该商品赋值,即表示购物车中存在此商品
          existenceGoods.pre_count = payload.goods_count
        }
      }

      /**判断购物车中是否存在某个商品*/
      if (existenceGoods) { //如果存在
        context.commit(Add_Goods_Count, existenceGoods) // 调用给该存在的商品数量加1的mutations方法
        resolve('商品数+' + existenceGoods.pre_count)
      } else { //反之,即不存在
        context.commit(Insert_Car_Goods, payload) //调用把此商品加入到购物车的mutations方法
        resolve('商品添加购物车成功')
      }
    })
  },

  /**
   * 清除选中的商品元素
   * @param context
   * @param payload
   */
  aDestroyCarToCarOfGoods(context, payload) {
    for (let i = 0; i < context.state.carList.length; i++) {
      if (context.state.carList[i].id === payload.id) { // 如果找到这个元素
        // context.state.carList.splice(i, 1)
        context.commit(Destroy_Car_Goods, i)
        break;
      }
    }
  },

  aUpdateCar(context, payload) {
  }

  // /**
  //  * 更新商品库存的方法
  //  * @param context
  //  * @param payload
  //  * @returns {Promise<unknown>}
  //  */
  // aUpdateGoodsStore(context, payload) {
  //   return new Promise((resolve, reject) => {
  //
  //     for (let i of context.state.carList) {
  //       if (i.id === payload.id && i.id && payload.id) {
  //         context(Goods_Store_Count, payload)
  //       }
  //     }
  //   })
  // }
}